package com.liuyc.lib.tools.browser.ext

import android.os.Build
import android.view.View
import android.webkit.WebSettings
import android.webkit.WebView
import com.liuyc.lib.tools.browser.NetworkUtils


inline fun WebView.init() {
    //设置缓存背景颜色--黑色
    setDrawingCacheBackgroundColor(0x00000000)
    setFocusableInTouchMode(true)
    setFocusable(true)
    //背景为空
    setBackground(null)
    getRootView().setBackground(null)

    if (android.os.Build.VERSION.SDK_INT == Build.VERSION_CODES.KITKAT) {
        setLayerType(View.LAYER_TYPE_SOFTWARE, null)
    }
    /*//以下接口禁止(直接或反射)调用，避免视频画面无法显示：*/
    setDrawingCacheEnabled(true)
    // 返回以前缓存设置
    setWillNotCacheDrawing(false)
    setSaveEnabled(true)
    //水平不显示
    setHorizontalScrollBarEnabled(false)
    //垂直不显示
    setVerticalScrollBarEnabled(false)
}

inline fun WebView.initSetting(webViewDbPath: String? = null){
    val webSettings: WebSettings = getSettings()
    //允许访问文件
    //允许访问文件
    webSettings.allowFileAccess = true
    // 设置可以支持缩放
    // 设置可以支持缩放
    webSettings.setSupportZoom(true)
    //隐藏webview缩放按钮
    //隐藏webview缩放按钮
    webSettings.displayZoomControls = false
    //使用WebView内置的缩放功能
    //使用WebView内置的缩放功能
    webSettings.builtInZoomControls = true
    //自动加载图片
    //自动加载图片
    webSettings.loadsImagesAutomatically = true
    //大于5.0系统之后,允许https和http混合加载
    //大于5.0系统之后,允许https和http混合加载
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        webSettings.mixedContentMode = WebSettings.MIXED_CONTENT_COMPATIBILITY_MODE
    }
    //dom存储api是否可用,默认false
    //dom存储api是否可用,默认false
    webSettings.domStorageEnabled = true
    //启用缓存
    //启用缓存
    webSettings.setAppCacheEnabled(true)
    //设置应用缓存文件路径
    //设置应用缓存文件路径
    webSettings.setAppCachePath(getContext().getCacheDir().toString())

    webSettings.allowFileAccessFromFileURLs = false

    webSettings.allowUniversalAccessFromFileURLs = false

    //网络可用,设置缓存使用方式

    //网络可用,设置缓存使用方式
    if (NetworkUtils.isConnected(context)) {
        webSettings.cacheMode = WebSettings.LOAD_DEFAULT
    } else {
        webSettings.cacheMode = WebSettings.LOAD_NO_CACHE
    }
    //定位数据库保存位置---可读写路径
    //定位数据库保存位置---可读写路径

    webViewDbPath?.let {
        webSettings.setGeolocationDatabasePath(it)
    }


    //数据库存储api是否可,默认为false

    //数据库存储api是否可,默认为false
    webSettings.databaseEnabled = true

    //utf-8

    //utf-8
    webSettings.defaultTextEncodingName = "utf-8"

    //表示开启webview lbs的功能

    //表示开启webview lbs的功能
    webSettings.setGeolocationEnabled(true)
    //请求头
    //请求头
    webSettings.setUserAgentString(WebSettings.getDefaultUserAgent(context))
    //启用js
    //启用js
    webSettings.javaScriptEnabled = true
    //允许js 弹出对话框
    //允许js 弹出对话框
    webSettings.javaScriptCanOpenWindowsAutomatically = true
    //布局按内容填充
    //布局按内容填充
    webSettings.layoutAlgorithm = WebSettings.LayoutAlgorithm.NARROW_COLUMNS
    //页面加载后再加载图片
    //页面加载后再加载图片
    webSettings.blockNetworkImage = false
    //不支持躲开窗口--18D(含)之前是支持的
    //不支持躲开窗口--18D(含)之前是支持的
    webSettings.setSupportMultipleWindows(false)
    //将图片调整到适合webview的大小
    //将图片调整到适合webview的大小
    webSettings.useWideViewPort = true
    //缩放至屏幕的大小
    //缩放至屏幕的大小
    webSettings.loadWithOverviewMode = true
    //设置WebView是否需要用户手势才能播放媒体。默认true。
    //设置WebView是否需要用户手势才能播放媒体。默认true。
    webSettings.mediaPlaybackRequiresUserGesture = true
    // 设置浏览器界面的文字大小
    // 设置浏览器界面的文字大小
    webSettings.textZoom = 100
}